﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Twi.COMMON.HTTP;
using System.Xml.Linq;

namespace Twi.COMMON.WPF
{
    public class SysParam
    {
        private static List<XElement> paramList = new List<XElement>();
        #region //客户端菜单打开:0总是打开新页面；1只打开一个界面。业务受理界面不受参数控制 007
        /// <summary>
        /// 客户端菜单打开:0总是打开新页面；1只打开一个界面。业务受理界面不受参数控制
        /// </summary>
        public static int OpenPageModel { get; set; }
        #endregion

        #region 缺省查询日期 020
        /// <summary>
        /// 缺省查询开始日期
        /// </summary>
        public static int DefaultStartDate { get; set; }

        /// <summary>
        /// 缺省查询结束日期
        /// </summary>
        public static int DefaultEndDate { get; set; }

        /// <summary>
        /// 缺省选中
        /// </summary>
        public static bool DefaultIsCheck { get; set; }

        /// <summary>
        /// 不可去掉
        /// </summary>
        public static bool DefaultIsEnable { get; set; }

        /// <summary>
        /// 不可去掉
        /// </summary>
        public static string[] FilterFuncCodeNoCheck { get; set; }
        #endregion
        public static int CalculateFeeDecimals { get; set; }
        #region 导出Excel类型 050
        /// <summary>
        /// 导出Excel类型：0全部为字符，1自适应
        /// </summary>
        public static int ExcelNumberFormatLocal { get; set; }
        /// <summary>
        /// 导出Excel类型：0全部为字符(货币或数字例外列)
        /// </summary>
        public static string[] ExcelNumber { get; set; }

        #endregion

        #region 获取系统参数
        /// <summary>
        /// 获取系统参数
        /// </summary>
        public static List<XElement> GetSysParam()
        {
            if (paramList.Count > 0)
                return paramList;
            XElement xe = null;
            using (var res = "Param/GetMultiple".HttpPost(xe))
            {
                ProcessRequest.Process(res, (ResponseMessageInfo resInfo) =>
                {
                    paramList = resInfo.ResponseDataMainBody.Elements().ToList();
                });
            }
            return paramList;
        }
        #endregion

        #region 网格列表默认选中行

        public static int DataGridDefaultSelectedRowIndex = -1;

        #endregion

        #region 初始化参数
        /// <summary>
        /// 初始化参数
        /// </summary>
        public static void InitialParam()
        {
            paramList = GetSysParam(); //获得参数
            foreach (XElement xe in paramList)
            {
                switch (xe.Element("ParamCode").Value)
                {
                    case "001":  //客户端菜单打开:0总是打开新页面；1只打开一个界面。业务受理界面不受参数控制
                        OpenPageModel = xe.Element("ParamValue1").GetValue<int>(0);
                        break;
                    case "010":  //查询时间段
                        DefaultStartDate = xe.Element("ParamValue1").GetValue<int>(30);
                        DefaultEndDate = xe.Element("ParamValue2").GetValue<int>(0);
                        if (xe.Element("ParamValue3").GetValue<int>(0) == 0)
                        {
                            DefaultIsCheck = false;
                            DefaultIsEnable = true;
                        }
                        else if (xe.Element("ParamValue3").GetValue<int>(0) == 1)
                        {
                            DefaultIsCheck = true;
                            DefaultIsEnable = true;
                        }
                        else if (xe.Element("ParamValue3").GetValue<int>(0) == 2)
                        {
                            DefaultIsCheck = true;
                            DefaultIsEnable = false;
                        }
                        FilterFuncCodeNoCheck = xe.Element("ParamValue4").GetValue().Split(';');
                        break;
                    case "020":
                        ExcelNumberFormatLocal = xe.Element("ParamValue1").GetValue<int>(1);  //0格式为字符，1自适应
                        ExcelNumber = xe.Element("ParamValue2").GetValue().Split(';');
                        break;
                    case "030":  
                        CalculateFeeDecimals = xe.Element("ParamValue2").GetValue<int>(0);//计费保留小数位
                        break;
                    default:
                        break;
                }
            }
        }
        #endregion
    }
}
